""" ModelSerializer 测试
ModelSerializer是Serializer的子类除了具有Serializer的功能外：
	根据Model类，自动生成字段
	为序列化器自动生成校验器
	为序列化器提供了简单的`create()`和`update()`方法实现，所以可以直接`save()`
注意虽然感觉上序列化器`save（create、update`），但是真正操作数据库是通过Model类
"""
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'p43.settings')
django.setup(set_prefix=False)
# 所有测试代码，都要在上面4行之下

from employee.models import Employee
from employee.serializers import EmpSerializer10

""" 序列化 """
emgr = Employee.objects
emp = emgr.get(pk=10010)
serializer = EmpSerializer10(emp)
print(serializer.data)
""" 结果：
{'emp_no': 10010, 'birth_date': '1963-06-01', 'first_name': 'Duangkaew', 'last_name': 'Piveteau', 'gender': 2, 'hire_date': '1989-08-24', 'email': None, 'content': None, 'created': '2025-09-18T15:41:29.617962+08:00', 'updated': '2025-09-18T15:41:29.863036+08:00'}
"""

""" 反序列化 """
data = {
    'emp_no': 10022, 'birth_date': '1963-06-01',
    'first_name': 'wu', 'last_name': 'wang',
    'gender': 1, 'hire_date': '1989-08-24',
    'email': None,
    'content': None,
    'created': '2025-09-18T15:41:29.617962+08:00',
    'updated': '2025-09-18T15:41:29.863036+08:00'
}  # 注意，这是字典数据是data，不是Employee的实例

emp = emgr.filter(pk=10022).first()
# 只有data，是新增
# data前有参数是 更新,如本例data前有emp参数
serializer = EmpSerializer10(emp,data=data)
serializer.is_valid()
x = serializer.save()  # 返回持久化的实例
print(type(x), x)
